
from rest_framework import serializers
from goods.models import SPUSpecification

# 规格表序列化器
class SpecModelSerializer(serializers.ModelSerializer):
    # 由于spu关联对象，业务需要序列化为关联对象的名称(即__str__方法返回结果)，所以此处重写spu类型为StringRelatedField
    spu = serializers.StringRelatedField() # 默认只参与序列化read_only=True
    # 外键关联对象的主键值隐藏字段
    spu_id = serializers.IntegerField()

    class Meta:
        model = SPUSpecification
        fields = [
            # id主键隐藏字段，默认也是read_only=True
            'id', # 默认情况下，模型类序列化器映射的主键字段，类型为Int类型，序列化结果为一个整数(主键值)
            'name', # 默认映射的就是Str类型，序列化结果就是规格名称
            'spu', # spu是关联的SPU对象，默认映射的类型是PrimaryKeyRelatedFiel，其序列化结果是关联对象的主键值
            'spu_id' # 关联spu对象字段的主键值字段，类型是Int
        ]
